package org.dromara.quick.chat.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.github.linpeilie.annotations.AutoMapper;
import io.github.linpeilie.annotations.AutoMappers;
import lombok.Data;
import org.dromara.quick.chat.model.vo.GroupChatInfoVO;
import org.dromara.quick.chat.model.vo.ImGroupChatDetailVO;
import org.dromara.quick.chat.model.vo.ImGroupChatVO;

import java.util.Date;

/**
 * 群聊表（群通讯录），记录群聊的相关信息及设置
 * @TableName im_group_chat
 */
@TableName(value ="im_group_chat")
@Data
@AutoMappers({
    @AutoMapper(target = ImGroupChatVO.class),
    @AutoMapper(target = ImGroupChatDetailVO.class),
    @AutoMapper(target = GroupChatInfoVO.class)
})
public class ImGroupChat {
    /**
     * (唯一标识) 群聊表的唯一标识编号，系统自动生成，用于区分不同的群聊记录
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * (群号) 11 位的群聊编号，具有唯一性
     */
    private String groupNumber;

    /**
     * (群名称) 群聊的名称，用于标识该群
     */
    private String groupName;

    /**
     * 群头像
     */
    private String groupAvatar;

    /**
     * (群描述) 对群聊的详细介绍信息
     */
    private String groupDescription;

    /**
     * (关联社区编号) 该群聊关联的社区编号，若有相关社区关联
     */
    private Long communityId;

    /**
     * (群创建人编号) 创建该群聊的用户编号，关联平台用户表中的用户编号
     */
    private Long creatorId;

    /**
     * (邀请确认) 表示邀请成员加入群聊时是否需要确认，0 代表未开启，1 代表已开启
     */
    private Integer invitationConfirmation;

    /**
     * (是否禁言) 表示群聊是否处于禁言状态，0 代表未禁言，1 代表已禁言
     */
    private Integer isMuted;

    /**
     * (删除聊天记录策略) 表示删除聊天记录的策略，0 代表未开启，1 代表退出聊天框删除，2 代表退出应用删除
     */
    private Integer chatRecordDeleteStrategy;

    /**
     * (阅后即焚) 表示阅后即焚功能的开启状态，0 代表未开启，1 代表已开启
     */
    private Integer burnAfterRead;

    /**
     * (阅后删除时长) 表示阅后即焚的持续时长，取值范围为 0 - 60 秒
     */
    private Integer burnAfterReadDuration;

    /**
     * (聊天记录保密) 表示聊天记录保密功能的开启状态，0 代表未开启，1 代表已开启
     */
    private Integer chatRecordConfidential;

    /**
     * (禁止截屏) 表示禁止截屏功能的开启状态，0 代表未开启，1 代表已开启
     */
    private Integer screenshotProhibited;

    /**
     * 拼音
     */
    private String groupNamePinyin;

    /**
     * (创建时间) 该群聊的创建时间，系统自动记录
     */
    private Date createTime;
}
